﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace AccesoDatos
{
    public class clsDevoluciones
    {
        SqlConnection sqlConn = new SqlConnection("Data Source=192.168.0.72; Initial Catalog=datos_001;user=sa; password=hermosillo; App=Devoluciones");
        SqlCommand sqlCmd = new SqlCommand();

        //DEVOLUCION
        private int _devId;
        private string _cliId;
        private string _factura;
        private string _motivo;
        private decimal _total;
        private string _estatus;
        private DateTime _fecha;
        private DateTime _fechaC;
        private string _folioMacro;
        private string _nombre;

        
        //

        //DETALLE DEVOLUCION
        private int _detId;
        private string _clave;
        private int _cantidad;
        private string _serie;
        private decimal _precio;
        //

        

        //PROPIEDADES DEVOLUCIONES
        public int DevId
        {
            get { return _devId; }
            set { _devId = value; }
        }
        public string CliId
        {
            get { return _cliId; }
            set { _cliId = value; }
        }
        public string Factura
        {
            get { return _factura; }
            set { _factura = value; }
        }
        public string Motivo
        {
            get { return _motivo; }
            set { _motivo = value; }
        }
        public decimal Total
        {
            get { return _total; }
            set { _total = value; }
        }
        public string Estatus
        {
            get { return _estatus; }
            set { _estatus = value; }
        }
        public DateTime Fecha
        {
            get { return _fecha; }
            set { _fecha = value; }
        }
        public DateTime FechaC
        {
            get { return _fechaC; }
            set { _fechaC = value; }
        }
        public string FolioMacro
        {
            get { return _folioMacro; }
            set { _folioMacro = value; }
        }
        public string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }
        //
        //PROPIEDADES DETALLE DEVOLUCION
        public int DetId
        {
            get { return _detId; }
            set { _detId = value; }
        }
        public string Clave
        {
            get { return _clave; }
            set { _clave = value; }
        }
        public int Cantidad
        {
            get { return _cantidad; }
            set { _cantidad = value; }
        }
        public string Serie
        {
            get { return _serie; }
            set { _serie = value; }
        }
        public decimal Precio
        {
            get { return _precio; }
            set { _precio = value; }
        }

        public List<clsDevoluciones> RegresaFacturasCliente(string strCliente)
        {
            //CREAR OBJETO DE CLASE DEVOLUCIONES
            clsDevoluciones objDev = new clsDevoluciones();
            List<clsDevoluciones> lstDevoluciones = new List<clsDevoluciones>();
            try
            {
                //CARGAR OBJETO DEL TIPO SQLCOMMAND
                sqlConn.Close();
                sqlCmd.Connection = sqlConn;
                sqlConn.Open();

                sqlCmd.Parameters.Clear();
                sqlCmd.CommandText = "sp_DEV_CargaFacturasCliente";
                sqlCmd.CommandType = CommandType.StoredProcedure;

                sqlCmd.Parameters.Add("@CliId", SqlDbType.VarChar).Value = strCliente;

                //CREAR E INICIALIZAR EL DATAREADER
                SqlDataReader dr = null;

                try
                {
                    //EJECUTAR LA INSTRUCCION
                    dr = sqlCmd.ExecuteReader();

                    while (dr.Read())
                    {
                        objDev = new clsDevoluciones();
                        //FolId
                        if (dr.IsDBNull(0))
                        {
                            objDev.Factura = "";
                        }
                        else
                        {
                            objDev.Factura = dr.GetValue(0).ToString();
                        }
                        //Fecha
                        if (dr.IsDBNull(1))
                        {
                            objDev.Fecha = Convert.ToDateTime("1900/01/01");
                        }
                        else
                        {
                            objDev.Fecha = Convert.ToDateTime(dr.GetValue(1).ToString());
                        }
                        //CliID
                        if (dr.IsDBNull(2))
                        {
                            objDev.CliId = "";
                        }
                        else
                        {
                            objDev.CliId = dr.GetValue(2).ToString();
                        }
                        //Nombre
                        if (dr.IsDBNull(3))
                        {
                            objDev.Nombre = "";
                        }
                        else
                        {
                            objDev.Nombre = dr.GetValue(3).ToString();
                        }
                        
                        lstDevoluciones.Add(objDev);


                    }
                    sqlConn.Close();
                }
                catch (Exception ex)
                {
                    return lstDevoluciones;
                }


            }
            catch (Exception e)
            {
                return lstDevoluciones;
            }


            return lstDevoluciones;


            

        
        }
        public List<clsDevoluciones> RegresaProductosFactura(string strFolio)
        {
            //CREAR OBJETO DE CLASE DEVOLUCIONES
            clsDevoluciones objDev = new clsDevoluciones();
            List<clsDevoluciones> lstArtDevoluciones = new List<clsDevoluciones>();
            try
            {
                //CARGAR OBJETO DEL TIPO SQLCOMMAND
                sqlConn.Close();
                sqlCmd.Connection = sqlConn;
                sqlConn.Open();

                sqlCmd.Parameters.Clear();
                sqlCmd.CommandText = "sp_DEV_RegresaProductosFactura";
                sqlCmd.CommandType = CommandType.StoredProcedure;

                sqlCmd.Parameters.Add("@FolId", SqlDbType.VarChar).Value = strFolio;

                //CREAR E INICIALIZAR EL DATAREADER
                SqlDataReader dr = null;

                try
                {
                    //EJECUTAR LA INSTRUCCION
                    dr = sqlCmd.ExecuteReader();

                    while (dr.Read())
                    {
                        objDev = new clsDevoluciones();
                        //Folio
                        if (dr.IsDBNull(0))
                        {
                            objDev.Factura = "";
                        }
                        else
                        {
                            objDev.Factura = dr.GetValue(0).ToString();
                        }
                        //Producto
                        if (dr.IsDBNull(1))
                        {
                            objDev.Clave = "";
                        }
                        else
                        {
                            objDev.Clave = dr.GetValue(1).ToString();
                        }
                        //Cantidad
                        if (dr.IsDBNull(2))
                        {
                            objDev.Cantidad = 0;
                        }
                        else
                        {
                            objDev.Cantidad = int.Parse(dr.GetValue(2).ToString());
                        }
                        //Precio
                        if (dr.IsDBNull(3))
                        {
                            objDev.Precio = 0.00M;
                        }
                        else
                        {
                            objDev.Precio = decimal.Parse(dr.GetValue(3).ToString());
                        }
                        lstArtDevoluciones.Add(objDev);


                    }
                    sqlConn.Close();
                }
                catch (Exception ex)
                {
                    return lstArtDevoluciones;
                }


            }
            catch (Exception e)
            {
                return lstArtDevoluciones;
            }


            return lstArtDevoluciones;
        }
        public void GuardaDevoluciones()
        { 
            
        }
        public bool ProcesaCantidad(clsDevoluciones objDev)
        {
            if (objDev.Clave.Trim() == Clave)
            {
                objDev.Cantidad = objDev.Cantidad - Cantidad;
                return true;
            }
            return true;
            
        }

    }
}
